﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MultiGed2.Topologie
{
 /// <summary>
 /// Smer jizdy vlaku.
 /// </summary>
 public enum SmerJizdy {
  /// <summary>
  /// Sudy smer: zleva doprava.
  /// </summary>
  Sudy,
  /// <summary>
  /// Lichy smer: zprava doleva.
  /// </summary>
  Lichy,
  /// <summary>
  /// Neznamy/nedefinovany smer.
  /// </summary>
  Nedefinovany
 }

 /// <summary>
 /// Tratova kolej, definuje spojeni mezi dopravnami v jednom smeru.
 /// </summary>
 public class TrKolej
 {
  private Dopravna _dopravnaZ;
  /// <summary>
  /// Vychozi dopravna.
  /// </summary>
  public Dopravna dopravnaZ { get { return _dopravnaZ; } }

  private Dopravna _dopravnaDo;
  /// <summary>
  /// Koncova dopravna.
  /// </summary>
  public Dopravna dopravnaDo { get { return _dopravnaDo; } }

  private SmerJizdy _smerZ;
  /// <summary>
  /// Vychozi smer.
  /// </summary>
  public SmerJizdy smerZ { get { return _smerZ; } }

  private SmerJizdy _smerDo;
  /// <summary>
  /// Koncovy smer.
  /// </summary>
  public SmerJizdy smerDo { get { return _smerDo; } }

  /// <summary>
  /// Konstruktor tratove koleje.
  /// </summary>
  /// <param name="dopravnaZ">Vychozi dopravna.</param>
  /// <param name="dopravnaDo">Koncova dopravna.</param>
  /// <param name="smerZ">Vychozi smer.</param>
  /// <param name="smerDo">Koncovy smer.</param>
  public TrKolej(Dopravna dopravnaZ, Dopravna dopravnaDo, SmerJizdy smerZ, SmerJizdy smerDo)
  {
   _dopravnaZ = dopravnaZ;
   _dopravnaDo = dopravnaDo;
   _smerZ = smerZ;
   _smerDo = smerDo;
  }

  public override string ToString()
  {
   return String.Format("{0}({1}) - ({2}){3}",
    _dopravnaZ,
    _smerZ == SmerJizdy.Lichy ? "L" : "S",
    _smerDo == SmerJizdy.Lichy ? "L" : "S",
    _dopravnaDo);
  }
 }
}
